1. Field of the Invention
This invention relates to the field of integrated circuits. More particularly, this invention relates to techniques for powering down and restarting data processing instruction execution upon an integrated circuit for power saving or other reasons.
2. Description of the Prior Art
It is known to provide mechanisms for switching an integrated circuit between an operational state in which data processing instructions are being executed and a power down state in which such execution is suspended but state is preserved, such that execution can recommence without any loss of information. Previous approaches include:                1) Using a software routine to store the state that must be preserved out over the system bus to memory that will not be powered down or that retain its state when powered down. On power up, another software routine is used to read the state over the system bus, restore the apporptiate registers and resume execution.        2) Using scan chains that are often included in the design for test purposes to serially scan out the state of every flip-flip in the design and store it in memory that will not be powered down or will retain it's state when powered down.        3) Using non-volatile flip-flips or flip-flops that have an independent power supply so that they retain state during power down. Usually, only a small part of each flip-flop remains powered up holding the sate, and other transistors associated with normal operation are powered down. The small part that remains powered is often referred to as “balloon” circuit.        
There are disadvantages with the above approaches: 1. Requires power down routines to be included in operating software. Existing code has to be retrofitted with these routines before power down can be used. It can also take a considerable amount of time to save and restore state as a software routine must be run in each case. This reduces the window of opportunity for taking advantage of idle time to power down. Although not requiring software support to function, 2 is slow as it requires serially scanning our the state of every flip-flop in design over one or ore scan chain before power down. Then scanning back in of all the state before power up. Again this reduces the window of opportunity for taking advantage of idle time to power down. 3. Does not require software support, and it allows very fast power up. These probably take only one or two cycles. However, adding balloon circuits to every flip-flop in the design adds a considerable area and possibly also a performance overhead.